﻿Imports ChatEngine.Client.Channel
Namespace Connections
    Public Enum Action
        Add
        Remove
    End Enum
    Public Enum ModeEnum
        None = 0
        User = 1
        HalfOP = 2
        Op = 3
        Admin = 4
        Owner = 5
    End Enum
    ''' <summary>
    ''' Holds the nick list for a particualar channel
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class NickListRecvArgs
        Dim NicksVar As String()
        Dim CNVar As String
        Public Sub New(ByVal Nicklist As String(), ByVal ChanneName1 As String)
            ListNicks = Nicklist
            ChanneName = ChanneName1
        End Sub
        Public Property ChanneName() As String
            Get
                Return CNVar
            End Get
            Set(ByVal value As String)
                CNVar = value
            End Set
        End Property
        Public Property ListNicks() As String()
            Get
                Return NicksVar
            End Get
            Set(ByVal value As String())
                NicksVar = value
            End Set
        End Property
    End Class
    ''' <summary>
    ''' EventArgs class for Channel mode changes
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class ChannelModeArgs
        Dim ListVar As Generic.List(Of UserModeCmbItem)
        Dim ChanVar As String
        Public Sub New(ByVal UserModeCmbProp As Generic.List(Of UserModeCmbItem), ByVal Channel As String)
            ListVar = UserModeCmbProp
            ChanVar = Channel
        End Sub
        Public Property UserModeCmbProp() As Generic.List(Of UserModeCmbItem)
            Get
                Return ListVar
            End Get
            Set(ByVal value As Generic.List(Of UserModeCmbItem))
                ListVar = value
            End Set
        End Property
        Public Property Channel() As String
            Get
                Return ChanVar
            End Get
            Set(ByVal value As String)
                ChanVar = value
            End Set
        End Property
    End Class
    ''' <summary>
    ''' EventArgs class for user mode changes
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class UserModeArgs
        Dim ActionVar As Action
        Dim ModeVar As ModeEnum
        Dim UserVar As String
        Dim SetterVar As String
        Dim ChanVar As String
        Public Property ModeAction() As Action
            Get
                Return ActionVar
            End Get
            Set(ByVal value As Action)
                ActionVar = value
            End Set
        End Property
        Public Property Setter() As String
            Get
                Return SetterVar
            End Get
            Set(ByVal value As String)
                SetterVar = value
            End Set
        End Property
        Public Property Mode() As ModeEnum
            Get
                Return ModeVar
            End Get
            Set(ByVal value As ModeEnum)
                ModeVar = value
            End Set
        End Property
        Public Property Channel() As String
            Get
                Return ChanVar
            End Get
            Set(ByVal value As String)
                ChanVar = value
            End Set
        End Property
        Public Property User() As String
            Get
                Return UserVar
            End Get
            Set(ByVal value As String)
                UserVar = value
            End Set
        End Property
    End Class
    ''' <summary>
    ''' Used by a channel center implementation to get the users on the ban list for a channel
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class BanListArgs
        Dim chan As String
        Dim blist As Generic.List(Of BanListItem)
        Public Sub New(ByVal BanList As Generic.List(Of BanListItem), ByVal ChanneName1 As String)
            chan = ChanneName1
            blist = BanList
        End Sub
        Public Property ChannelName() As String
            Get
                Return chan
            End Get
            Set(ByVal value As String)
                chan = value
            End Set
        End Property
        Public Property BanList() As Generic.List(Of BanListItem)
            Get
                Return blist
            End Get
            Set(ByVal value As Generic.List(Of BanListItem))
                blist = value
            End Set
        End Property
    End Class
    ''' <summary>
    ''' Provides a generic User/message Event Arguements class
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class GenericEventArgs
        Dim MessageVar, UserVar As String
        Public Sub New(ByVal Message As String, ByVal User As String)
            MessageVar = Message
            UserVar = User
        End Sub
        Public Property Message() As String
            Get
                Return MessageVar
            End Get
            Set(ByVal value As String)
                MessageVar = value
            End Set
        End Property
        Public Property User() As String
            Get
                Return UserVar
            End Get
            Set(ByVal value As String)
                UserVar = value
            End Set
        End Property
    End Class
    ''' <summary>
    ''' Used by the Client class to pass the details of a user kicked event to the front end.
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class KickedEventArgs
        Dim UserVar, KickerVar, ReasonVar, ChannelVar As String
        Public Property KickedUser() As String
            Get
                Return UserVar
            End Get
            Set(ByVal value As String)
                UserVar = value
            End Set
        End Property
        Public Property Kicker() As String
            Get
                Return KickerVar
            End Get
            Set(ByVal value As String)
                KickerVar = value
            End Set
        End Property
        Public Property Channel() As String
            Get
                Return ChannelVar
            End Get
            Set(ByVal value As String)
                ChannelVar = value
            End Set
        End Property
        Public Property Reason() As String
            Get
                Return ReasonVar
            End Get
            Set(ByVal value As String)
                ReasonVar = value
            End Set
        End Property
    End Class
End Namespace